#define _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//#include<map>
//using namespace std;
//int n, s;
//map<int, int> S;
//map<int, int> B;
//int main()
//{
//    cin >> n >> s;
//    char judge;
//    while (n--)
//    {
//        cin >> judge;
//        int a, b;
//        cin >> a >> b;
//        if (judge == 'S')
//            S[a] += b;
//        else if (judge == 'B')
//            B[a] += b;
//    }
//    int i = 0;
//    if (S.size() < s)
//        for (auto p = S.rbegin(); p != S.rend(); p++)
//        {
//            i++;
//            if (i > s)
//                break;
//            cout << 'S' << ' ' << p->first << ' ' << p->second << endl;
//        }
//    else
//        for (auto p = S.rbegin(); p != S.rend(); p++)
//            cout << 'S' << ' ' << p->first << ' ' << p->second << endl;
//    i = 0;
//    if (B.size() < s)
//        for (auto p = B.rbegin(); p != B.rend(); p++)
//            cout << 'B' << ' ' << p->first << ' ' << p->second << endl;
//    else
//        for (auto p = B.rbegin(); p != B.rend(); p++)
//        {
//            i++;
//            if (i > s)
//                break;
//            cout << 'B' << ' ' << p->first << ' ' << p->second << endl;
//        }
//    return 0;
//}
#include<iostream>
using namespace std;
const int N = 1e5 + 10;
int l1[N], l[N], r1[N];
int n;
int main()
{
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cin >> l1[i] >> l[i];
        r1[i] = l1[i];
    }
    int num = 2;
    for (int i = 1; i < n - 1; i++)
    {
        if (l1[i] - l[i] > r1[i - 1])
        {
            num++;
            l1[i] -= l[i];
        }
        else if (r1[i] + l[i] < l1[i + 1])
        {
            num++;
            r1[i] += l[i];
        }
    }
    cout << num;
    return 0;
}